
package com.yict.common.util;

import java.math.BigDecimal;


public class ArithmeticUtil
{
	/**
     * 
     * @param num1 被乘数
     * @param num2 乘数
     * @return
     */
    public static Number multiply(Number num1, Number num2){
    	BigDecimal val1 = new BigDecimal(num1.doubleValue());
    	BigDecimal val2 = new BigDecimal(num2.doubleValue());
    	return val1.multiply( val2 );
    }
    
    /**
     * 
     * @param num1 被除数
     * @param num2 除数
     * @param scale 保留小数位数
     * @return
     */
    public static Number divide(Number num1, Number num2, int scale){
        return divide(num1, num2, BigDecimal.ROUND_HALF_UP, scale);
    }
    
    /**
     * 
     * @param num1 被除数
     * @param num2 除数
     * @param roundType 四舍五入类型
     * @param scale 保留小数位数
     * @return
     */
    public static Number divide(Number num1, Number num2, int roundType, int scale){
        if (num1.intValue() == 0 || num2.intValue() == 0) {
            return new BigDecimal(0);
        }
        else if(scale<0)
        {
        	throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }

        BigDecimal val1 = new BigDecimal(String.valueOf(num1));
        BigDecimal val2 = new BigDecimal(String.valueOf(num2));
        BigDecimal val3 = null;

        if (roundType != 0) {
            val3 = val1.divide(val2, scale, roundType);
        }

        return val3;
    }
    
}


